package com.seeTools.next.common.config.dubbo;

import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.dubbo.rpc.*;

/**
 * @Author: seeTools
 * @Date: 2024/5/14  17:04
 * @Version 1.0
 */
public class SaTokenDubboFilter implements Filter {


    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        // 在Dubbo服务执行之前，从上下文中获取sa-token信息
        String token = RpcContext.getContext().getAttachment("sa-token");
        if (token != null) {
            // 如果有token，使用sa-token进行登录
            StpUtil.login(token);
        }
        // 继续执行Dubbo服务
        Result result = invoker.invoke(invocation);
        // 服务执行完毕后，可以进行权限校验或其他逻辑
        // ...
        return result;
    }

}
